perm filename CH.LST[MF,DEK] blob
sn#760410 filedate 1984-07-04 generic text, type T, neo UTF8
1) INITEX.CH[TEX,SYS] and 2) BUGTEX.CH[TEX,DEK] 7-04-84 10:18 pages 3,3
**** File 1) INITEX.CH[TEX,SYS]/3P/3L
1) @y
1) @d banner=='This is TeX, WAITS Version 1.1' {printed when \TeX\ starts}
1) @z
**** File 2) BUGTEX.CH[TEX,DEK]/3P/3L
2) @y [Actually the standard banner is used so that TRIP.LOG looks normal]
2) @d banner=='This is TeX, Version 1.1' {printed when \TeX\ starts}
2) @z
***************
**** File 1) INITEX.CH[TEX,SYS]/4P/14L
1) @d debug==@{ {change this to `$\\{debug}\equiv\null$' when debugging}
1) @d gubed==@t@>@} {change this to `$\\{gubed}\equiv\null$' when debugging}
1) @f debug==begin
**** File 2) BUGTEX.CH[TEX,DEK]/4P/14L
2) @d debug== {change this to `$\\{debug}\equiv\null$' when debugging}
2) @d gubed== {change this to `$\\{gubed}\equiv\null$' when debugging}
2) @f debug==begin
***************
**** File 1) INITEX.CH[TEX,SYS]/6P/5L
1) @{@&$C-,A+,D-,W+,H:0@}
1) {no range check, catch arithmetic overflow, no debug overhead, no heap}
1) @!debug @{@&$C+,D:5,W+@}@+ gubed {but turn everything on when debugging}
1) {the `|W+|' switch catches more syntax errors}
1) {the `\ignorespaces|D:5|' avoids initial stop for the debugger}
**** File 2) BUGTEX.CH[TEX,DEK]/6P/5L
2) @{@&$C-,A+,D-,W+@}
2) {no range check, catch arithmetic overflow, no debug overhead}
2) @!debug @{@&$C+,D:5,W+,Z:@=377777777777B@>@}@+ gubed
2) {but turn everything on when debugging}
2) {the `|W+|' switch catches more syntax errors}
2) {the `|Z|' switch sets variables to maxint before they receive a value}
2) {the `\ignorespaces|D:5|' avoids initial stop for the debugger}
***************
**** File 1) INITEX.CH[TEX,SYS]/7P/37L
1) @!mem_max=33000; {greatest index in \TeX's internal |mem| array;
1) must be strictly less than |max_halfword|;
1) also, for \ph, we must keep total variable storage < 128K words}
1) @!buf_size=500; {maximum number of characters simultaneously present in
**** File 2) BUGTEX.CH[TEX,DEK]/7P/37L
2) @!mem_max=3000; {greatest index in \TeX's internal |mem| array;
2) must be strictly less than |max_halfword|;
2) this is the value appropriate to the \.{TRIP} test file}
1) INITEX.CH[TEX,SYS] and 2) BUGTEX.CH[TEX,DEK] 7-04-84 10:18 pages 7,7
2) @!buf_size=500; {maximum number of characters simultaneously present in
***************
**** File 1) INITEX.CH[TEX,SYS]/7P/43L
1) @!error_line=80; {width of context lines on terminal error messages}
1) @!half_error_line=50; {width of first lines of contexts in terminal
1) error messages; should be between 30 and |error_line-15|}
1) @!max_print_line=80; {width of longest text lines output; should be at least 60}
1) @!stack_size=200; {maximum number of simultaneous input sources}
**** File 2) BUGTEX.CH[TEX,DEK]/7P/43L
2) @!error_line=64; {width of context lines on terminal error messages}
2) @!half_error_line=32; {width of first lines of contexts in terminal
2) error messages; should be between 30 and |error_line-15|}
2) @!max_print_line=72; {width of longest text lines output; should be at least 60}
2) @!stack_size=200; {maximum number of simultaneous input sources}
***************
**** File 1) INITEX.CH[TEX,SYS]/7P/50L
1) @!font_max=100;
1) {maximum internal font number; must not exceed |max_quarterword|}
1) @!font_mem_size=23000; {number of words of |font_info| for all fonts}
1) @!param_size=60; {maximum number of simultaneous macro parameters}
**** File 2) BUGTEX.CH[TEX,DEK]/7P/50L
2) @!font_max=75;
2) {maximum internal font number; must not exceed |max_quarterword|}
2) @!font_mem_size=20000; {number of words of |font_info| for all fonts}
2) @!param_size=60; {maximum number of simultaneous macro parameters}
***************
**** File 1) INITEX.CH[TEX,SYS]/7P/63L
1) @!save_size=300; {space for saving values outside of current group; must be
1) at most |max_halfword|}
**** File 2) BUGTEX.CH[TEX,DEK]/7P/63L
2) @!save_size=600; {space for saving values outside of current group; must be
2) at most |max_halfword|}
***************
**** File 1) INITEX.CH[TEX,SYS]/8P/15L
1) @d hi_mem_base=25000 {smallest index in the single-word area of |mem|;
1) must be substantially larger than |mem_base| and smaller than |mem_max|}
**** File 2) BUGTEX.CH[TEX,DEK]/8P/15L
2) @d hi_mem_base=2300 {smallest index in the single-word area of |mem|;
2) must be substantially larger than |mem_base| and smaller than |mem_max|}
***************
1) INITEX.CH[TEX,SYS] and 2) BUGTEX.CH[TEX,DEK] 7-04-84 10:18 pages 8,8
**** File 1) INITEX.CH[TEX,SYS]/15P/4L
1) @y
1) @<Character |k| cannot be printed@>=
1) (k=@'177)∨(k in [0,@'11..@'15,@'33])
1) @z
**** File 2) BUGTEX.CH[TEX,DEK]/15P/4L
2) @y [no change when running the TRIP test]
2) @<Character |k| cannot be printed@>=
2) (k<" ")∨(k>"~")
2) @z
***************
**** File 1) INITEX.CH[TEX,SYS]/18P/9L
1) The values defined here are recommended for most 36-bit computers.
1) @d min_quarterword=0 {smallest allowable value in a |quarterword|}
**** File 2) BUGTEX.CH[TEX,DEK]/18P/9L
2) The values defined here are recommended for most 36-bit computers,
2) except |max_halfword| is strange (just to make the test hairier).
2) @d min_quarterword=0 {smallest allowable value in a |quarterword|}
***************
**** File 1) INITEX.CH[TEX,SYS]/18P/14L
1) @d max_halfword==262143 {largest allowable value in a |halfword|}
1) @z
**** File 2) BUGTEX.CH[TEX,DEK]/18P/15L
2) @d max_halfword==32768 {largest allowable value in a |halfword|}
2) @z
***************
**** File 1) INITEX.CH[TEX,SYS]/19P/15L
1) @y
1) The inner loop of \TeX\ will run faster with respect to compilers
**** File 2) BUGTEX.CH[TEX,DEK]/19P/15L
2) @y We leave in "+0" and "-0" to catch errors of missing parentheses.
2) The inner loop of \TeX\ will run faster with respect to compilers
***************
**** File 1) INITEX.CH[TEX,SYS]/19P/22L
1) @d qi(#)==# {to put an |eight_bits| item into a quarterword}
1) @d qo(#)==# {to take an |eight_bits| item from a quarterword}
1) @d hi(#)==# {to put a sixteen-bit item into a halfword}
1) @d ho(#)==# {to take a sixteen-bit item from a halfword}
1) INITEX.CH[TEX,SYS] and 2) BUGTEX.CH[TEX,DEK] 7-04-84 10:18 pages 19,19
1) @z
**** File 2) BUGTEX.CH[TEX,DEK]/19P/22L
2) @d qi(#)==0+#+0 {to put an |eight_bits| item into a quarterword}
2) @d qo(#)==0+#-0 {to take an |eight_bits| item from a quarterword}
2) @d hi(#)==0+#+0 {to put a sixteen-bit item into a halfword}
2) @d ho(#)==0+#-0 {to take a sixteen-bit item from a halfword}
2) @z
***************
**** File 1) INITEX.CH[TEX,SYS]/31P/2L
1) allows both lowercase and uppercase letters in the file name.
1) @↑system dependencies@>
1) @d append_to_name(#)==begin c←#; incr(k);
1) @y
1) converts lowercase letters to uppercase.
1) A special convention is used here with respect to font metric files: If the
1) file name is longer than six characters (e.g., `\.{helvetica}' or
1) `\.{oldenglish}'), we abbreviate it by retaining the first three and
1) last three characters (e.g., `\.{helica}' or `\.{oldish}').
1) @↑system dependencies@>
1) @d append_to_name(#)==begin c←#; incr(k);
1) if (c≥"a")∧(c≤"z") then c←c-@'40; {convert to uppercase}
1) @z
1) @x
1) for j←str_start[a] to str_start[a+1]-1 do append_to_name(str_pool[j]);
**** File 2) BUGTEX.CH[TEX,DEK]/31P/2L
2) for j←str_start[a] to str_start[a+1]-1 do append_to_name(str_pool[j]);
***************
**** File 1) INITEX.CH[TEX,SYS]/31P/23L
1) if (e=".tfm")∧(length(n)>6) then
1) begin for j←str_start[n] to str_start[n]+2 do
1) append_to_name(str_pool[j]);
1) for j←str_start[n+1]-3 to str_start[n+1]-1 do
1) append_to_name(str_pool[j]);
1) end
1) else for j←str_start[n] to str_start[n+1]-1 do append_to_name(str_pool[j]);
1) for j←str_start[e] to str_start[e+1]-1 do append_to_name(str_pool[j]);
**** File 2) BUGTEX.CH[TEX,DEK]/31P/6L
2) j←".tfm"; {this keeps \.{tex.pool} the same as in production \TeX}
2) for j←str_start[n] to str_start[n+1]-1 do append_to_name(str_pool[j]);
2) for j←str_start[e] to str_start[e+1]-1 do append_to_name(str_pool[j]);
***************
**** File 1) INITEX.CH[TEX,SYS]/33P/3L
1) INITEX.CH[TEX,SYS] and 2) BUGTEX.CH[TEX,DEK] 7-04-84 10:18 pages 33,33
1) possible version number) of a file that has been opened. The following routine,
1) which simply makes a \TeX\ string from the value of |name_of_file|, should
1) ideally be changed to deduce the full name of file~|f|, if it is
1) possible to do this in a \PASCAL\ program.
1) @↑system dependencies@>
1) @p function make_name_string:str_number;
1) var k:1..file_name_size; {index into |name_of_file|}
1) begin str_room(name_length);
1) for k←1 to name_length do append_char(xord[name_of_file[k]]);
1) make_name_string←make_string;
1) end;
1) function a_make_name_string(var f:alpha_file):str_number;
1) begin a_make_name_string←make_name_string;
1) end;
1) function b_make_name_string(var f:byte_file):str_number;
1) begin b_make_name_string←make_name_string;
1) end;
1) function w_make_name_string(var f:word_file):str_number;
1) begin w_make_name_string←make_name_string;
1) end;
1) @y
1) @ Operating systems often make it possible to determine the exact name (and
1) possible version number) of a file that has been opened. The following routine,
1) due to David Fuchs, deduces the full name of file~|f| on {\mc WAITS}:
1) @↑system dependencies@>
1) @↑Fuchs, David Raymond@>
1) @p procedure cur_nam(var chan:f@&i@&l@&e;var s:string); extern; @t\2@>@/
1) function make_name_string(var f:f@&i@&l@&e):str_number;
1) var s:packed array[1..24] of char;
1) @!k:1..24; {file names at {\sc SAIL} have at most 23 characters}
1) begin cur_nam(f,s); str_room(24); k←1;
1) while ord(s[k])≠0 do
1) begin append_char(xord[s[k]]); incr(k);
1) end;
1) make_name_string←make_string;
1) end;
1) function a_make_name_string(var f:alpha_file):str_number;
1) begin a_make_name_string←make_name_string(f);
1) end;
1) function b_make_name_string(var f:byte_file):str_number;
1) begin b_make_name_string←make_name_string(f);
1) end;
1) function w_make_name_string(var f:word_file):str_number;
1) begin w_make_name_string←make_name_string(f);
1) end;
1) @z
**** File 2) BUGTEX.CH[TEX,DEK]/33P/3L
2) @y We don't change them in BUGTEX
1) INITEX.CH[TEX,SYS] and 2) BUGTEX.CH[TEX,DEK] 7-04-84 10:18 pages 33,33
2) @ Operating systems often make it possible to determine the exact name (and
2) @z
***************